//观察者
//功能为每条数据绑定一个函数 该函数更新视图
class Watcher {
  constructor(vm, key, callback) {
    this.vm = vm
    this.cb = callback
    this.key = key
    Dep.target = this
    //这是为了避免没有产生watcher的时候添加了发布订阅的事件
    this.oldValue = vm[key]
    Dep.target = null
  }
  update() {
    let newvalue = this.vm[this.key]
    if (newvalue === this.oldValue) {
      return
    }
    this.cb(newvalue)
  }
}